package algorithm.swordoff;

import java.util.HashMap;
import java.util.Map;

/**
 * 数组中数字出现的次数II
 * 在一个数组 nums 中除一个数字只出现一次之外，其他数字都出现了三次。请找出那个只出现一次的数字。
 *
 * 这题用hashmap方法不是很好,空间复杂度太高
 * 可以看看大佬的题解空间复杂度O(1)
 * 留个悬念
 */

public class SQ56_2 {
    public int singleNumber(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            map.put(num, map.getOrDefault(num, 0)+1);
            if (map.getOrDefault(num, 0) == 3) map.remove(num);
        }
        return map.keySet().toArray(new Integer[0])[0];
    }
}
